#pragma once

class KeyboardAction // Interface for using Command Pattern on keyboard events
{
public:
	virtual void onKeyPressed()=0;
	virtual void onKeyReleased()=0;
};

class CloseDiva :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveBackward :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveDown :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveForward :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveLeft :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveRight :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveUp :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class MoveToOrigin :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class RollLeft :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};

class RollRight :
	public KeyboardAction
{
public:
	virtual void onKeyPressed();
	virtual void onKeyReleased();
};